/**
 * 用户认证相关工具函数
 */

// 存储认证相关信息的工具函数

// Token在本地存储中的键名
const TokenKey = 'carshop_token'
// 用户信息在本地存储中的键名
const UserInfoKey = 'userInfo'

/**
 * 获取Token
 * @returns {string} Token字符串
 */
export function getToken() {
  return localStorage.getItem(TokenKey)
}

/**
 * 设置Token
 * @param {string} token - Token字符串
 */
export function setToken(token) {
  localStorage.setItem(TokenKey, token)
}

/**
 * 移除Token
 */
export function removeToken() {
  localStorage.removeItem(TokenKey)
}

/**
 * 获取用户信息
 * @returns {Object} 用户信息对象
 */
export function getUserInfo() {
  const userInfoStr = localStorage.getItem(UserInfoKey)
  return userInfoStr ? JSON.parse(userInfoStr) : null
}

/**
 * 设置用户信息
 * @param {Object} userInfo - 用户信息对象
 */
export function setUserInfo(userInfo) {
  // 将用户类型文本添加到用户信息中
  if (userInfo.userType && !userInfo.userTypeText) {
    switch (userInfo.userType) {
      case '01':
      case '1':
        userInfo.userTypeText = '管理员'
        break
      case '02':
      case '2':
        userInfo.userTypeText = '经销商'
        break
      case '03':
      case '3':
        userInfo.userTypeText = '普通用户'
        break
      default:
        userInfo.userTypeText = '未知'
    }
  }
  
  // 设置默认值
  userInfo.nickname = userInfo.nickname || userInfo.username
  userInfo.avatar = userInfo.avatar || ''
  
  console.log('保存用户信息到localStorage:', userInfo)
  localStorage.setItem(UserInfoKey, JSON.stringify(userInfo))
}

/**
 * 移除用户信息
 */
export function removeUserInfo() {
  localStorage.removeItem(UserInfoKey)
}

/**
 * 判断用户是否已登录
 * @returns {boolean} 是否已登录
 */
export function isLoggedIn() {
  return !!getToken() && !!getUserInfo()
}

/**
 * 判断用户是否是管理员
 * @returns {boolean} 是否是管理员
 */
export function isAdmin() {
  const userInfo = getUserInfo()
  return userInfo && (userInfo.userType === '01' || userInfo.userType === '1')
}

/**
 * 清除所有认证信息（登出时使用）
 */
export function clearAuth() {
  removeToken()
  removeUserInfo()
}

/**
 * 用户登出
 * 清除认证信息并返回Promise
 */
export function logout() {
  clearAuth()
  // 同时移除其他可能存在的认证信息
  localStorage.removeItem('remember')
  return Promise.resolve()
} 